﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DiscoveryLogic.DataViz.NetworkDiagram.Layouts
{
    /// <summary>
    /// 
    /// </summary>
    public enum GraphLayoutAlgorithm
    {
        /// <summary>
        /// spring embedder
        /// repulsion force for non-adjacent vertices u,v: f=(c/d*d)
        /// spring force for adjacent vertices: f=c*Log(d/l)
        /// </summary>
        Eades =0,
        /// <summary>
        /// repelling force for every pair of vertices: f=l*l/d
        /// attracting force for adjacent vertices: f=d*d/l
        /// heuristic modifications:
        /// 1) for any vertice pair with distance > threshold, repelling force = 0
        /// 2) the net force is clipped at a time-dependent maximum displacement to prevent excessive changes, esp at later stage
        /// 3) if displacement would position a vertex beyond a boundary (screen), the corresponding coordinate of displacement vector is clipped
        /// 4) equations are refined to speed up calculation (no sqrt function)
        /// 5) added gravitational forces to prevent components of a disconected graph from drifting arbitrarily far apart
        /// </summary>
        FruchtermanReingold=1,
    }
}
